package utilities;

import java.lang.reflect.InvocationTargetException;
import java.sql.ResultSet;
import java.sql.SQLException;

import javax.swing.JOptionPane;

import org.apache.commons.mail.EmailException;
import org.apache.commons.mail.SimpleEmail;

public class EmailSend {
	public static void segnalaRestituzione(String[] credenziali,
			String nomeLibro, long isbn, String dataStimata) {
		try {

			StringBuilder sb = new StringBuilder(500);
			sb.append("Ciao  ");
			sb.append(credenziali[0].toUpperCase());
			sb.append(" ");
			sb.append(credenziali[1].toUpperCase());
			sb.append(" ti ricordiamo di restituire il seguente libro : \n");
			sb.append(nomeLibro);
			sb.append("\n");
			sb.append("ISBN: ");
			sb.append(isbn);
			sb.append("\n");
			sb.append("entro il : ");
			sb.append(dataStimata.toUpperCase());
			sb.append("\n");
			sb.append("ARRIVEDERCI");
			SimpleEmail email = new SimpleEmail();
			email.setHostName("smtp.gmail.com");
			email.setAuthentication("bibliotecaunical2013@gmail.com",
					"Laboratorio1");
			email.setSmtpPort(587);
			email.setStartTLSEnabled(true);
			email.addTo(credenziali[2]);
			email.setFrom("bibliotecaunical2013@gmail.com", "Biblioteca Unical");
			email.setSubject("Prestito");
			email.setMsg(sb.toString());
			email.send();
		} catch (EmailException e) {
			int option = JOptionPane.showConfirmDialog(null,
					"Email non inviata vuoi riprovare??", "Email Prestito",
					JOptionPane.YES_NO_OPTION);
			if (option == JOptionPane.YES_OPTION) {
				EmailSend.segnalaRestituzione(credenziali, nomeLibro, isbn,
						dataStimata);
			}
		}
	}

	public static void segnalaConfermaPrestito(String[] credenziali,
			ResultSet res, long isbn, String dataStimata) {
		try {
			res.next();
			String nomeLibro = res.getString("titolo");
			StringBuilder sb = new StringBuilder(500);
			sb.append("Ciao  ");
			sb.append(credenziali[0].toUpperCase());
			sb.append(" ");
			sb.append(credenziali[1].toUpperCase());
			sb.append(" hai effettuato il seguente prestito : \n");
			sb.append(nomeLibro);
			sb.append("\n");
			sb.append("ISBN: ");
			sb.append(isbn);
			sb.append("\n");
			sb.append("Ti preghiamo di restituirlo entro il : ");
			sb.append(dataStimata.toUpperCase());
			sb.append("\n");
			sb.append("ARRIVEDERCI");
			SimpleEmail email = new SimpleEmail();
			email.setHostName("smtp.gmail.com");
			email.setAuthentication("bibliotecaunical2013@gmail.com",
					"Laboratorio1");
			email.setSmtpPort(587);
			email.setStartTLSEnabled(true);
			email.addTo(credenziali[2]);
			email.setFrom("bibliotecaunical2013@gmail.com", "Biblioteca Unical");
			email.setSubject("Prestito");
			email.setMsg(sb.toString());
			email.send();
		} catch (EmailException e) {
			int option = JOptionPane.showConfirmDialog(null,
					"Email non inviata vuoi riprovare??", "Email Prestito",
					JOptionPane.YES_NO_OPTION);
			if (option == JOptionPane.YES_OPTION) {
				EmailSend.segnalaConfermaPrestito(credenziali, res, isbn,
						dataStimata);
			}
		} catch (SQLException e) {
		}

	}

	public static void segnalaConfermaRinnovo(String[] credenziali,
			ResultSet res, long isbn, String dataStimata) {
		try {
			res.next();
			String nomeLibro = res.getString("titolo");
			StringBuilder sb = new StringBuilder(500);
			sb.append("Ciao  ");
			sb.append(credenziali[0].toUpperCase());
			sb.append(" ");
			sb.append(credenziali[1].toUpperCase());
			sb.append(" hai richiesto di prolungare il seguente prestito : \n");
			sb.append(nomeLibro);
			sb.append("      ISBN:");
			sb.append(isbn);
			sb.append("\n");
			sb.append("Ti preghiamo di restituirlo entro il : ");
			sb.append(dataStimata.toUpperCase());
			sb.append("\n");
			sb.append("ARRIVEDERCI");
			SimpleEmail email = new SimpleEmail();
			email.setHostName("smtp.gmail.com");
			email.setAuthentication("bibliotecaunical2013@gmail.com",
					"Laboratorio1");
			email.setSmtpPort(587);
			email.setStartTLSEnabled(true);
			email.addTo(credenziali[2]);
			email.setFrom("bibliotecaunical2013@gmail.com", "Biblioteca Unical");
			email.setSubject("Prestito");
			email.setMsg(sb.toString());
			email.send();
		} catch (EmailException e) {
			int option = JOptionPane.showConfirmDialog(null,
					"Email non inviata vuoi riprovare??",
					"Email Rinnovo Prestito", JOptionPane.YES_NO_OPTION);
			if (option == JOptionPane.YES_OPTION) {
				EmailSend.segnalaConfermaPrestito(credenziali, res, isbn,
						dataStimata);
			}
		} catch (SQLException e) {
		}

	}

	public static void segnalaRegistrazioneCliente(String mail, int id,String nome, String cognome, String password)
			throws InvocationTargetException, InterruptedException {

		try {
			StringBuilder sb = new StringBuilder(500);
			sb.append("Benvenuto ");
			sb.append(nome.toUpperCase());
			sb.append(" ");
			sb.append(cognome.toUpperCase());
			sb.append(" Grazie per aver scelto la Biblioteca Unical.Ti sei appena registrato con queste credenziali : \n");
			sb.append("ID CLIENTE  ");
			sb.append(id);
			sb.append("\n");
			sb.append("PASSWORD  ");
			sb.append(password);
			SimpleEmail email = new SimpleEmail();
			email.setHostName("smtp.gmail.com");
			email.setAuthentication("bibliotecaunical2013@gmail.com",
					"Laboratorio1");
			email.setSmtpPort(587);
			email.setStartTLSEnabled(true);
			email.addTo(mail);
			email.setFrom("bibliotecaunical2013@gmail.com", "Biblioteca Unical");
			email.setSubject("Registrazione Cliente");
			email.setMsg(sb.toString());
			email.send();
		} catch (EmailException e) {
			e.printStackTrace();
			int option = JOptionPane.showConfirmDialog(null,
					"Email non inviata vuoi riprovare??", "Exit",
					JOptionPane.YES_NO_OPTION);
			if (option == JOptionPane.YES_OPTION) {
				EmailSend.segnalaRegistrazioneCliente(mail, id, nome, cognome,
						password);

			}
		}
	}
}
